home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 43 / Amiga Format CD43 (1999)(Future Publishing)(GB)(Track 1 of 2)[!][issue 1999-09].iso / -serious- / programming / e / nsm / examples / flipblock.e < prev    next >
Text File  |  1999-06-14  |  2KB  |  65 lines

  1. -> flipblock.e
  2.  
  3. /*
  4.  
  5. flipblock.c by Kjetil S. Matheussen 9.12.98.
  6. flipblock.e by Claude Heiland-Allen 1999.05.16
  7.  
  8. */
  9.  
  10. OPT OSVERSION=37, REG=3
  11.  
  12. MODULE 'other/nsm', 'other/nsm_extra'
  13.  
  14. RAISE "MEM" IF String() = NIL
  15.  
  16. PROC main() HANDLE
  17.  
  18.     DEF oss, bb,
  19.         numtracks, length, pages, data,
  20.         track, line, page, cmd,
  21.         buffer[128] : STRING
  22.  
  23.     IF (oss := nsm_getoctabase()) = NIL THEN Raise("nsm")
  24.     IF (bb := nsm_getcurrblockbase(oss)) = NIL THEN Raise("nsm")
  25.  
  26.     numtracks := nsm_getnumtracks(bb)
  27.     length    := nsm_getnumlines(bb) - 1
  28.     pages     := nsm_getnumpages(bb)
  29.  
  30.     FOR line := 0 TO length/2 - 1
  31.         IF nsm_getlinehighlight(bb, length - line) <> nsm_getlinehighlight(bb, line)
  32.             nsm_sendrexx(StringF(buffer, 'ED_HIGHLIGHTLINE \d TOGGLE', line))
  33.             nsm_sendrexx(StringF(buffer, 'ED_HIGHLIGHTLINE \d TOGGLE', length - line))
  34.         ENDIF
  35.         FOR track := 0 TO numtracks
  36.             FOR cmd := MED_NOTE TO MED_INUM
  37.                 data := nsm_getmed(cmd, bb, track, line, 1)
  38.                 nsm_setmed(cmd, bb, track, line, 1,
  39.                     nsm_getmed(cmd, bb, track, length - line, 1))
  40.                 nsm_setmed(cmd, bb, track, length - line, 1, data)
  41.             ENDFOR
  42.             FOR page := 1 TO pages + 1
  43.                 FOR cmd := MED_CMDNUM TO MED_CMDLVL
  44.                     data := nsm_getmed(cmd, bb, track, line, page)
  45.                     nsm_setmed(cmd, bb, track, line, page,
  46.                         nsm_getmed(cmd, bb, track, length - line, page))
  47.                     nsm_setmed(cmd, bb, track, length - line, page, data)
  48.                 ENDFOR
  49.             ENDFOR
  50.         ENDFOR
  51.     ENDFOR
  52.  
  53.     nsm_updateeditor(oss)
  54.  
  55. EXCEPT DO
  56.  
  57.     SELECT exception
  58.     CASE "MEM";  WriteF('Error: no mem\n')
  59.     CASE "nsm";  WriteF('Error: no nsm\n')
  60.     ENDSELECT
  61.  
  62. ENDPROC IF exception THEN 5 ELSE 0
  63.  
  64. version: CHAR '$VER: flipblock 1.1 (1999.05.16)', 0
  65.